module nade.fspu;

import std.stdio;
import std.variant;

import nade.stack;


alias void delegate() Command;
alias Stack!(Command) CommandStack;

alias Algebraic!(Command, ubyte, byte, uint, int, ulong, long, float, real, double, char, dchar, wchar, string) Cell;
alias Stack!(Cell) CellStack;


// class FSPU : CPU!(Cell) {
	// void pushCell(Cell cell)
	// {
		// _topCell = new StackCell(cell, _topCell);
	// }

	// void pushNumber(T)(T number)
	// {
		// static if(is(T : Number)  ||  is(T : const(Number)))
			// auto r = new NumberCell(number);
		// else
			// auto r = new NumberCell(Number(number));

		// pushCell(r);
	// }

	// Number popNumber()
	// {
		// return (cast(NumberCell)pop)._number;
	// }
// }
